프로세서 기초와 명령어 집합
오늘의 목표 : 프로세서 기초와 명령어 집합 공부하기
일단 컴퓨터의 구조이다
제어장치가 시키고, 연산장치가 일하고, 레지스터가 저장하는 느낌이다~_~
역할
역할
역할
정의
특징
32개의 범용 레지스터 (x0 ~ x31)
레지스터 | ABI 이름 | 용도 | 보존 여부 |
---|---|---|---|
x0 | zero | 항상 0 | - |
x1 | ra | 복귀 주소 | 호출자 |
x2 | sp | 스택 포인터 | 피호출자 |
x3 | gp | 글로벌 포인터 | - |
x4 | tp | 쓰레드 포인터 | - |
x5-x7 | t0-t2 | 임시 레지스터 | 호출자 |
x8 | s0/fp | 저장/프레임 포인터 | 피호출자 |
x9 | s1 | 저장 레지스터 | 피호출자 |
x10-x11 | a0-a1 | 인수/반환값 | 호출자 |
x12-x17 | a2-a7 | 인수 레지스터 | 호출자 |
x18-x27 | s2-s11 | 저장 레지스터 | 피호출자 |
x28-x31 | t3-t6 | 임시 레지스터 | 호출자 |
특수 레지스터
용도: 레지스터 간 연산 형식: op rd, rs1, rs2
용도: 즉시값과 레지스터 연산, 로드 명령어 형식: op rd, rs1, imm
또는 op rd, imm(rs1)
용도: 스토어 명령어 형식: op rs2, imm(rs1)
용도: 조건부 분기 형식: op rs1, rs2, label
용도: 상위 즉시값 로드 형식: op rd, imm
용도: 무조건 점프 형식: op rd, label
형식: addi x1, x2, 100
의미: 즉시값을 직접 사용
장점: 빠름
단점: 값의 크기 제한
형식: add x1, x2, x3
의미: 레지스터 값 직접 사용
장점: 가장 빠름
특징: RISC의 기본 방식
형식: lw x1, 8(x2)
의미: 베이스 레지스터 + 오프셋
용도: 배열, 구조체 접근
계산: 주소 = x2 + 8
형식: beq x1, x2, label
의미: 현재 PC + 오프셋
용도: 분기 명령어
장점: 위치 독립적 코드
1. 인출 (Fetch)
IR ← Memory[PC]
PC ← PC + 4
2. 해석 (Decode)
3. 실행 (Execute)
4. 쓰기 (Write-back)
add x1, x2, x3
실행1. Fetch: IR ← Memory[PC], PC ← PC + 4
2. Decode: R-type, rs1=x2, rs2=x3, rd=x1, funct=ADD
3. Execute: ALU_result ← Register[x2] + Register[x3]
4. Write-back: Register[x1] ← ALU_result